package capaPresentacion.client.vista;

import capaPresentacion.client.presentador.PresentadorLogueo;

import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.LayoutPanel;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;

public class VistaLogueo extends Composite implements PresentadorLogueo.Display {

	// Paneles
	private final DockPanel panelPrincipal;
	private final LayoutPanel panelSuperior;
	private final VerticalPanel panelIzquierdo, panelDerecho, panelInferior;
	private final FlexTable banerDerecho, banerIzquierdo, banerInferior;

	// Logueo
	private final FlexTable logeoTabla;
	private final TextBox nombreUsuario;
	private final PasswordTextBox contrasenya;
	private final Button aceptarButton;

	// Registro
	private final FlexTable registrarseTabla;
	private final Button aceptarRegistroButton;
	private final TextBox nombre, apellidos, edad, altura, peso, email;
	private final PasswordTextBox contrasenya1, contrasenya2;

	public VistaLogueo() {

		// Paneles
		panelPrincipal = new DockPanel();
		panelSuperior = new LayoutPanel();
		panelInferior = new VerticalPanel();
		panelIzquierdo = new VerticalPanel();
		panelDerecho = new VerticalPanel();
		banerDerecho = new FlexTable();
		banerIzquierdo = new FlexTable();
		banerInferior = new FlexTable();

		// Logueo
		logeoTabla = new FlexTable();
		nombreUsuario = new TextBox();
		contrasenya = new PasswordTextBox();
		aceptarButton = new Button("Aceptar");

		logeoTabla.setWidget(2, 1, aceptarButton);
		logeoTabla.setText(0, 0, "Email: ");
		logeoTabla.setText(1, 0, "Contraseña: ");
		logeoTabla.setWidget(0, 1, nombreUsuario);
		logeoTabla.setWidget(1, 1, contrasenya);

		logeoTabla.getElement().setId("logeo");

		// Registro
		registrarseTabla = new FlexTable();
		nombre = new TextBox();
		apellidos = new TextBox();
		email = new TextBox();
		edad = new TextBox();
		altura = new TextBox();
		peso = new TextBox();
		contrasenya1 = new PasswordTextBox();
		contrasenya2 = new PasswordTextBox();
		aceptarRegistroButton = new Button("Aceptar");

		registrarseTabla.setText(0, 0, "Nombre: ");
		registrarseTabla.setText(1, 0, "Apellidos: ");
		registrarseTabla.setText(2, 0, "Email: ");
		registrarseTabla.setText(3, 0, "Contraseña: ");
		registrarseTabla.setText(4, 0, "Repita Contraseña: ");
		registrarseTabla.setText(5, 0, "Edad: ");
		registrarseTabla.setText(6, 0, "Altura (cm): ");
		registrarseTabla.setText(7, 0, "Peso (kg): ");

		registrarseTabla.setWidget(0, 1, nombre);
		registrarseTabla.setWidget(1, 1, apellidos);
		registrarseTabla.setWidget(2, 1, email);
		registrarseTabla.setWidget(3, 1, contrasenya1);
		registrarseTabla.setWidget(4, 1, contrasenya2);
		registrarseTabla.setWidget(5, 1, edad);
		registrarseTabla.setWidget(6, 1, altura);
		registrarseTabla.setWidget(7, 1, peso);
		registrarseTabla.setWidget(8, 1, aceptarRegistroButton);

		registrarseTabla.getElement().setId("registro");

		// Paneles
		Image icono = new Image("images/IconoGrande.png");
		panelIzquierdo.add(logeoTabla);
		panelIzquierdo.setCellHorizontalAlignment(logeoTabla,
				HasHorizontalAlignment.ALIGN_CENTER);
		panelDerecho.add(registrarseTabla);
		panelDerecho.setCellHorizontalAlignment(registrarseTabla,
				HasHorizontalAlignment.ALIGN_CENTER);
		panelIzquierdo.add(icono);
		panelIzquierdo.setCellHorizontalAlignment(icono,
				HasHorizontalAlignment.ALIGN_CENTER);
		panelIzquierdo.setCellVerticalAlignment(icono,
				HasVerticalAlignment.ALIGN_MIDDLE);

		Image imagen = new Image("images/Titulo.png");
		panelSuperior.add(imagen);
		panelSuperior.setWidgetLeftRight(imagen, 185, Unit.PX, 0, Unit.EM);
		
		banerInferior.setText(0, 75, "2012 PFC World's Trainer | J.D. del Moral | R. González");
		
		panelInferior.add(banerInferior);
		panelInferior.setCellHorizontalAlignment(banerInferior,
				HasHorizontalAlignment.ALIGN_CENTER);
		panelInferior.setCellVerticalAlignment(banerInferior,
				HasVerticalAlignment.ALIGN_MIDDLE);
		
		banerDerecho.setWidth("150px");
		banerIzquierdo.setWidth("150px");
		panelInferior.setHeight("150px");
		panelDerecho.setWidth("450px");
		panelSuperior.setHeight("200px");
		panelIzquierdo.setWidth("450px");
		panelIzquierdo.setHeight("350px");

		panelPrincipal.add(banerIzquierdo, DockPanel.WEST);
		panelPrincipal.add(banerDerecho, DockPanel.EAST);
		panelPrincipal.add(panelSuperior, DockPanel.NORTH);
		panelPrincipal.add(panelInferior, DockPanel.SOUTH);
		panelPrincipal.add(panelIzquierdo, DockPanel.WEST);
		panelPrincipal.add(panelDerecho, DockPanel.EAST);

		initWidget(panelPrincipal);
	}

	// Logueo
	@Override
	public HasClickHandlers getBotonAceptar() {
		return aceptarButton;
	}

	@Override
	public HasValue<String> getNombreUsuario() {
		return nombreUsuario;
	}

	@Override
	public HasValue<String> getContrasenya() {
		return contrasenya;
	}

	// Registro
	@Override
	public HasClickHandlers getAceptarRegistrarse() {
		return aceptarRegistroButton;
	}

	@Override
	public HasValue<String> getNombre() {
		return nombre;
	}

	@Override
	public HasValue<String> getApellidos() {
		return apellidos;
	}

	@Override
	public HasValue<String> getEmail() {
		return email;
	}

	@Override
	public HasValue<String> getContrasenya1() {
		return contrasenya1;
	}

	@Override
	public HasValue<String> getContrasenya2() {
		return contrasenya2;
	}

	@Override
	public HasValue<String> getPeso() {
		return peso;
	}

	@Override
	public HasValue<String> getAltura() {
		return altura;
	}

	@Override
	public HasValue<String> getEdad() {
		return edad;
	}
}
